/*
 * Copyright (c) 2021-2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @addtogroup Drawing
 * @{
 *
 * @brief Drawing模块提供包括2D图形渲染、文字绘制和图片显示等功能函数。\n
 * 本模块采用屏幕物理像素单位px。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 *
 * @since 8
 * @version 1.0
 */

/**
 * @file drawing_pen.h
 * <!--RP1-->**相关示例：** [NDKAPIDrawing (API14)](https://gitee.com/openharmony/applications_app_samples/tree/master/code/DocsSample/Drawing/NDKAPIDrawing)<!--RP1End-->
 * @brief 文件中定义了与画笔相关的功能函数。
 *
 * @include native_drawing/drawing_pen.h
 * @library libnative_drawing.so
 * @kit ArkGraphics2D
 * @since 8
 * @version 1.0
 */

#ifndef C_INCLUDE_DRAWING_PEN_H
#define C_INCLUDE_DRAWING_PEN_H

#include "drawing_types.h"
#include "drawing_error_code.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief 声明色域管理对象，提供获取色域基础属性的能力。
 * @since 20
 */
typedef struct OH_NativeColorSpaceManager OH_NativeColorSpaceManager;

/**
 * @brief 用于创建一个画笔对象。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @return 函数会返回一个指针，指针指向创建的画笔对象。
 * @since 8
 * @version 1.0
 */
OH_Drawing_Pen* OH_Drawing_PenCreate(void);

/**
 * @brief 创建一个画笔对象副本{@link OH_Drawing_Pen}，用于拷贝一个已有画笔对象。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @return 函数会返回一个指针，指针指向创建的画笔对象副本{@link OH_Drawing_Pen}。如果对象返回NULL，表示创建失败；可能的原因是可用内存为空，或者是pen为NULL。
 * @since 12
 * @version 1.0
 */
OH_Drawing_Pen* OH_Drawing_PenCopy(OH_Drawing_Pen* pen);

/**
 * @brief 用于销毁画笔对象并回收该对象占有的内存。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @since 8
 * @version 1.0
 */
void OH_Drawing_PenDestroy(OH_Drawing_Pen* pen);

/**
 * @brief 用于获取画笔是否设置抗锯齿属性，如果为真则说明画笔会启用抗锯齿功能，在绘制图形时会对图形的边缘像素进行半透明的模糊处理。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @return 函数返回画笔对象是否设置抗锯齿属性，返回真则设置了抗锯齿，返回假则没有设置抗锯齿。
 * @since 8
 * @version 1.0
 */
bool OH_Drawing_PenIsAntiAlias(const OH_Drawing_Pen* pen);

/**
 * @brief 用于设置画笔的抗锯齿属性，设置为真则画笔在绘制图形时会对图形的边缘像素进行半透明的模糊处理。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @param antiAlias 真为抗锯齿，假则不做抗锯齿处理。
 * @since 8
 * @version 1.0
 */
void OH_Drawing_PenSetAntiAlias(OH_Drawing_Pen* pen, bool antiAlias);

/**
 * @brief 用于获取画笔的颜色属性，颜色属性描述了画笔绘制图形轮廓时使用的颜色，用一个32位（ARGB）的变量表示。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @return 函数返回一个描述颜色的32位（ARGB）变量。
 * @since 8
 * @version 1.0
 */
uint32_t OH_Drawing_PenGetColor(const OH_Drawing_Pen* pen);

/**
 * @brief 用于设置画笔的颜色属性，颜色属性描述了画笔绘制图形轮廓时使用的颜色，用一个32位（ARGB）的变量表示。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @param color 描述颜色的32位（ARGB）变量。
 * @since 8
 * @version 1.0
 */
void OH_Drawing_PenSetColor(OH_Drawing_Pen* pen, uint32_t color);

/**
 * @brief 获取画笔的透明度值。画笔在勾勒图形时透明通道会使用该值。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 表示指向画笔对象的指针。
 * @return 返回一个8比特的值表示透明度。
 * @since 11
 * @version 1.0
 */
uint8_t OH_Drawing_PenGetAlpha(const OH_Drawing_Pen* pen);

/**

 * @brief 为画笔设置透明度值。画笔在勾勒图形时透明通道会使用该值。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 表示指向画笔对象的指针。
 * @param alpha 表示要设置的透明度值，是一个8比特的变量。
 * @since 11
 * @version 1.0
 */
void OH_Drawing_PenSetAlpha(OH_Drawing_Pen* pen, uint8_t alpha);

/**
 * @brief 用于设置画笔的颜色属性，颜色属性描述了画笔绘制图形轮廓时使用的颜色。\n
 * 颜色采用浮点数表示的ARGB格式，色彩空间由{@link OH_NativeColorSpaceManager}指定。\n
 * 如果colorSpaceManager为nullptr，使用SRGB（基于IEC 61966-2.1：1999的标准红绿蓝色彩空间）色彩空间作为默认值。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 表示指向{@link OH_Drawing_Pen}对象的指针。
 * @param a 表示颜色中的透明度值，用0.0 ~ 1.0之间的浮点数表示，大于1.0时，取1.0，小于0.0时，取0.0。
 * @param r 表示颜色中的红色分量，用0.0 ~ 1.0之间的浮点数表示，大于1.0时，取1.0，小于0.0时，取0.0。
 * @param g 表示颜色中的绿色分量，用0.0 ~ 1.0之间的浮点数表示，大于1.0时，取1.0，小于0.0时，取0.0。
 * @param b 表示颜色中的蓝色分量，用0.0 ~ 1.0之间的浮点数表示，大于1.0时，取1.0，小于0.0时，取0.0。
 * @param colorSpaceManager 表示指向{@link OH_NativeColorSpaceManager}对象的指针。
 * @return 函数返回执行结果。\n
 * 返回OH_DRAWING_SUCCESS，表示执行成功。\n
 * 返回OH_DRAWING_ERROR_INVALID_PARAMETER，表示参数pen为NULL。
 * @since 20
 * @version 1.0
 */
OH_Drawing_ErrorCode OH_Drawing_PenSetColor4f(OH_Drawing_Pen* pen, float a, float r, float g, float b,
    OH_NativeColorSpaceManager* colorSpaceManager);

/**
 * @brief 获取画笔颜色的透明度值。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 表示指向{@link OH_Drawing_Pen}对象的指针。
 * @param a 表示颜色中的透明度，范围为0.0 ~ 1.0的浮点数。
 * @return 函数返回执行结果。\n
 * 返回OH_DRAWING_SUCCESS，表示执行成功。\n
 * 返回OH_DRAWING_ERROR_INVALID_PARAMETER，表示参数pen或a为NULL。
 * @since 20
 * @version 1.0
 */
OH_Drawing_ErrorCode OH_Drawing_PenGetAlphaFloat(const OH_Drawing_Pen* pen, float* a);

/**
 * @brief 获取画笔颜色的红色分量。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 表示指向{@link OH_Drawing_Pen}对象的指针。
 * @param r 表示颜色中的红色分量，范围为0.0 ~ 1.0的浮点数。
 * @return 函数返回执行结果。\n
 * 返回OH_DRAWING_SUCCESS，表示执行成功。\n
 * 返回OH_DRAWING_ERROR_INVALID_PARAMETER，表示参数pen或r为NULL。
 * @since 20
 * @version 1.0
 */
OH_Drawing_ErrorCode OH_Drawing_PenGetRedFloat(const OH_Drawing_Pen* pen, float* r);

/**
 * @brief 获取画笔颜色的绿色分量。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 表示指向{@link OH_Drawing_Pen}对象的指针。
 * @param g 表示颜色中的绿色分量，范围为0.0 ~ 1.0的浮点数。
 * @return 函数返回执行结果。\n
 * 返回OH_DRAWING_SUCCESS，表示执行成功。\n
 * 返回OH_DRAWING_ERROR_INVALID_PARAMETER，表示参数pen或g为NULL。
 * @since 20
 * @version 1.0
 */
OH_Drawing_ErrorCode OH_Drawing_PenGetGreenFloat(const OH_Drawing_Pen* pen, float* g);

/**
 * @brief 获取画笔颜色的蓝色分量。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 表示指向{@link OH_Drawing_Pen}对象的指针。
 * @param b 表示颜色中的蓝色分量，范围为0.0 ~ 1.0的浮点数。
 * @return 函数返回执行结果。\n
 * 返回OH_DRAWING_SUCCESS，表示执行成功。\n
 * 返回OH_DRAWING_ERROR_INVALID_PARAMETER，表示参数pen或b为NULL。
 * @since 20
 * @version 1.0
 */
OH_Drawing_ErrorCode OH_Drawing_PenGetBlueFloat(const OH_Drawing_Pen* pen, float* b);

/**
 * @brief 用于获取画笔的厚度属性，厚度属性描述了画笔绘制图形轮廓的宽度。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @return 函数返回画笔的厚度。
 * @since 8
 * @version 1.0
 */
float OH_Drawing_PenGetWidth(const OH_Drawing_Pen* pen);

/**
 * @brief 用于设置画笔的厚度属性，厚度属性描述了画笔绘制图形轮廓的宽度。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @param width 描述画笔厚度的变量。
 * @since 8
 * @version 1.0
 */
void OH_Drawing_PenSetWidth(OH_Drawing_Pen* pen, float width);

/**
 * @brief 用于获取折线尖角的限制值，当画笔绘制一条折线，转角类型设置为尖角时，那么此时该属性用于限制出现尖角的长度范围，如果超出则平角显示，不超出依然为尖角。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @return 函数返回尖角的限制值。
 * @since 8
 * @version 1.0
 */
float OH_Drawing_PenGetMiterLimit(const OH_Drawing_Pen* pen);

/**
 * @brief 用于设置折线尖角的限制值，当画笔绘制一条折线，转角类型设置为尖角时，那么此时该属性用于限制出现尖角的长度范围，如果超出则平角显示，不超出依然为尖角。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @param miter 描述尖角限制值的变量。
 * @since 8
 * @version 1.0
 */
void OH_Drawing_PenSetMiterLimit(OH_Drawing_Pen* pen, float miter);

/**
 * @brief 枚举集合定义了画笔笔帽的样式，即画笔在绘制线段时，在线段头尾端点的样式。
 * 
 * @since 8
 * @version 1.0
 */
typedef enum {
    /** 没有笔帽样式，线条头尾端点处横切。 */
    LINE_FLAT_CAP,
    /** 笔帽的样式为方框，线条的头尾端点处多出一个方框，方框宽度和线段一样宽，高度时线段厚度的一半。 */
    LINE_SQUARE_CAP,
    /** 笔帽的样式为圆弧，线条的头尾端点处多出一个半圆弧，半圆的直径与线段厚度一致。 */
    LINE_ROUND_CAP
} OH_Drawing_PenLineCapStyle;

/**
 * @brief 用于获取画笔笔帽的样式。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @return 函数返回画笔笔帽样式。
 * @since 8
 * @version 1.0
 */
OH_Drawing_PenLineCapStyle OH_Drawing_PenGetCap(const OH_Drawing_Pen* pen);

/**
 * @brief 用于设置画笔笔帽样式。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER；\n
 * capStyle不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @param capStyle 描述画笔笔帽样式的变量。
 * @since 8
 * @version 1.0
 */
void OH_Drawing_PenSetCap(OH_Drawing_Pen* pen, OH_Drawing_PenLineCapStyle capStyle);

/**
 * @brief 枚举集合定义了线条转角的样式，即画笔在绘制折线段时，在折线转角处的样式。
 * 
 * @since 8
 * @version 1.0
 */
typedef enum {
    /** 转角类型为尖角，如果折线角度比较小，则尖角会很长，需要使用限制值（miter limit）进行限制。 */
    LINE_MITER_JOIN,
    /** 转角类型为圆头。 */
    LINE_ROUND_JOIN,
    /** 转角类型为平头。 */
    LINE_BEVEL_JOIN
} OH_Drawing_PenLineJoinStyle;

/**
 * @brief 用于获取画笔绘制折线转角的样式。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @return 函数返回折线转角的样式。
 * @since 8
 * @version 1.0
 */
OH_Drawing_PenLineJoinStyle OH_Drawing_PenGetJoin(const OH_Drawing_Pen* pen);

/**
 * @brief 用于设置画笔绘制转角的样式。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER；\n
 * joinStyle不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象的指针。
 * @param joinStyle 折线转角样式。
 * @since 8
 * @version 1.0
 */
void OH_Drawing_PenSetJoin(OH_Drawing_Pen* pen, OH_Drawing_PenLineJoinStyle joinStyle);

/**
 * @brief 设置画笔着色器效果。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象{@link OH_Drawing_Pen}的指针。
 * @param shaderEffect 指向着色器对象{@link OH_Drawing_ShaderEffect}的指针，为NULL表示清空着色器效果。
 * @since 11
 * @version 1.0
 */
void OH_Drawing_PenSetShaderEffect(OH_Drawing_Pen* pen, OH_Drawing_ShaderEffect* shaderEffect);

/**
 * @brief 设置画笔阴影层效果，设置的阴影层效果当前仅在绘制文字时生效。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象{@link OH_Drawing_Pen}的指针。
 * @param shadowLayer 指向阴影层对象{@link OH_Drawing_ShadowLayer}的指针，为NULL表示清空阴影层效果。
 * @since 12
 * @version 1.0
 */
void OH_Drawing_PenSetShadowLayer(OH_Drawing_Pen* pen, OH_Drawing_ShadowLayer* shadowLayer);

/**
 * @brief 设置画笔路径效果。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象{@link OH_Drawing_Pen}的指针。
 * @param pathEffect 指向路径效果对象{@link OH_Drawing_PathEffect}的指针，为NULL表示清空路径效果。
 * @since 12
 * @version 1.0
 */
void OH_Drawing_PenSetPathEffect(OH_Drawing_Pen* pen, OH_Drawing_PathEffect* pathEffect);

/**
 * @brief 设置画笔滤波器。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象{@link OH_Drawing_Pen}的指针。
 * @param filter 指向滤波器{@link OH_Drawing_Filter}的指针，为NULL表示清空画笔滤波器。
 * @since 11
 * @version 1.0
 */
void OH_Drawing_PenSetFilter(OH_Drawing_Pen* pen, OH_Drawing_Filter* filter);

/**
 * @brief 从画笔获取滤波器{@link OH_Drawing_Filter}。滤波器是一个容器，可以承载蒙版滤波器和颜色滤波器。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen、filter任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象{@link OH_Drawing_Pen}的指针。
 * @param filter 指向滤波器对象{@link OH_Drawing_Filter}的指针。
 * @since 12
 * @version 1.0
 */
void OH_Drawing_PenGetFilter(OH_Drawing_Pen* pen, OH_Drawing_Filter* filter);

/**
 * @brief 为画笔设置一个混合器，该混合器实现了指定的混合模式枚举。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER；\n
 * blendMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象{@link OH_Drawing_Pen}的指针。
 * @param blendMode 混合模式枚举类型{@link OH_Drawing_BlendMode}。
 * @since 12
 * @version 1.0
 */
void OH_Drawing_PenSetBlendMode(OH_Drawing_Pen* pen, OH_Drawing_BlendMode blendMode);

/**
 * @brief 获取使用画笔绘制的源路径轮廓，并用目标路径表示。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen、src、dst任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象{@link OH_Drawing_Pen}的指针。
 * @param src 指向源路径对象{@link OH_Drawing_Path}的指针。
 * @param dst 指向目标路径对象{@link OH_Drawing_Path}的指针。
 * @param rect 指向矩形对象{@link OH_Drawing_Rect}的指针，推荐使用NULL。
 * @param matrix 指向矩阵对象{@link OH_Drawing_Matrix}的指针，推荐使用NULL, 默认是一个单位矩阵。
 * @return 获取目标路径是否成功。true表示获取成功，false表示获取失败。
 * @since 12
 * @version 1.0
 */
bool OH_Drawing_PenGetFillPath(OH_Drawing_Pen* pen, const OH_Drawing_Path* src, OH_Drawing_Path* dst,
    const OH_Drawing_Rect* rect, const OH_Drawing_Matrix* matrix);

/**
 * @brief 将画笔重置至初始值。\n
 *
 * 本接口会产生错误码，可以通过{@link OH_Drawing_ErrorCodeGet}查看错误码的取值。\n
 * pen为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER。
 *
 * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing
 * @param pen 指向画笔对象{@link OH_Drawing_Pen}的指针。
 * @since 12
 * @version 1.0
 */
void OH_Drawing_PenReset(OH_Drawing_Pen* pen);

#ifdef __cplusplus
}
#endif
/** @} */
#endif